layout | title | description | date | categories | comments |
---|---|---|---|---|---|
post |
Languages Syntax |
Languages Syntax |
2019-04-19 12:08:00 -0700 |
Programming_Languages |
true |
-
언어 정의 - 구문과 의미로 구성되어 있다.
- 자연어 정의, 형식 정의
- 구문 형식 정의 - BNF, EBNF, 구문 조표
-
컴퓨터 - 프로그램을 실행할 수 있는 알고리즘 + 자료구조 집합
- 하드웨어 컴퓨터(실제 컴퓨터), 소프트웨어 시뮬레이터 컴퓨터, 가상 컴퓨터(Virtual Computer)
-
가상 컴퓨터 : 고급언어 프로그래머는 컴퓨터를 가상의 고급 언어 컴퓨터로 간주
-
프로그래밍 언어의 기본 문자 집합
-
문자 코드 체계
- EBCDIC (Extended Binary Coded Decimal Interchange Code) : IBM에서 제안, 8비트 조합 코드
- ASCII (American Standard Code for Information Interchange)
- ANSI에서 제안, 7비트 조합 코드(128개의 문자 표현)
- 영문자 대소문자 52개 + 숫자 10개 + 33개의 특수문자 + 33개의 제어문자
- 유니코드 (Unicode) : 16bit, ISO 표준 규격, Java에 시행
-
정합 순서 (Collating Sequence) : 언어에 제공된 문자 순서
- 일반적인 문자의 순서는 지킨다.
- 구현 시 결정되는 코드 체계를 따른다. (프로그래머가 정의 가능 : RPG, SNOBOL)
-
어휘 구조 용어
- 어휘 토큰(Lexical Token), 어휘 요소(Lexical Element), 어휘 단위(Lexical Unit)
- 언어 구성자
- 식별자(Identifier), 미리 정의된 식별자(Predefined Identifier), 예약어
- 구분자, 분리자
-
예약어 (Reserved Words / Keywords)
- 언어 어휘를 구선하는 단어나 기호 형태의 문자 알파벳
- 프로그램의 변수 이름으로 사용할 수 없다.
- 장점 : 프로그램 판독성 증가, 컴파일러가 기호 테이블을 빠른 시간에 탐색
- 단점 : 많은 예약어를 기억하기 어려움, 언어 확장 시 새로운 예약어가 확장 이전에 사용했던 프로그램의 식별자와 중복 우려가 있다.
-
BNF(Backus-Naur Form) 표기법
-
문맥 자유 문법
- Chomsky는 자연 언어에 대해 4가지 언어 유형의 문법을 제안
- 프로그래밍 언어의 구문을 기술하는데 유용한 것으로 판명
- 일련의 생성 규칙들로 구성되는 형식 (V -> w)
-
Backus-Naur 형식
- 배커스는 문맥 자유 문법과 유사한 형식의 표기법에 의해 구문이 기술된 ALGOL 58에 대한 논문을 발표
- 1년 후 배커스의 표기법을 수정하여 ALGOL 60을 기술
- 프로그래밍 언어의 구문을 기술하는데 매우 자연스러운 표기법
-
BNF는 생성 규칙들의 집합 : 배정문에 대한 생성 규칙
-
수에 대한 문법
-
유도
-
간단한 배정문에 대한 문법 (덧셈, 뺄셈 연산자와 괄호를 가진 산술식)
-
유도 : A = 3 + (5 - 2)
-
파스 트리
- 유도 과정을 이해하기 쉬운 트리 형태의 계층적 구조로 나타낸 것
- 파스 트리의 시작 기호는 루트
- 123을 유도하는 파스 트리
- 파스 트리를 통한 유도에는 좌측 우선 유도와 우측 유선 유도가 있다.
- A = 3 + 5 * 2
-
EBNF